package com.example.controller;

import com.bob.auth.dto.response.ApiResponse;
import com.example.dto.EmployeeQueryRequest;
import com.example.dto.PageResult;
import com.example.entity.Employee;
import com.example.service.EmployeeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * 员工数据查询Controller
 */
@Slf4j
@RestController
@RequestMapping("/api/employee")
public class EmployeeController {
    
    @Resource
    private EmployeeService employeeService;
    
    /**
     * 分页查询员工列表
     * 支持智能识别查询：
     * - 可传入 userCodeOrFullName 字段，系统会自动识别是用户编码（纯数字）还是姓名（中文）
     * - 也可直接传入 userCode、fullName、cOrgId 等具体字段进行查询
     * 
     * @param query 查询条件（支持动态条件）
     * @return 分页结果
     */
    @GetMapping("/page")
    public ApiResponse<PageResult<Employee>> queryByPage(EmployeeQueryRequest query) {
        log.info("接收到员工分页查询请求：{}", query);
        
        try {
            // 使用智能查询方法，自动识别 userCodeOrFullName
            PageResult<Employee> result = employeeService.queryByPageWithSmartSearch(query);
            return ApiResponse.success(result, "查询成功");
        } catch (Exception e) {
            log.error("查询员工列表失败", e);
            return ApiResponse.error(500, "查询失败：" + e.getMessage());
        }
    }
    
    /**
     * 根据ID查询员工详情
     * 
     * @param id 员工ID
     * @return 员工信息
     */
    @GetMapping("/{id}")
    public ApiResponse<Employee> getById(@PathVariable String id) {
        log.info("查询员工详情，ID：{}", id);
        
        try {
            // 这里可以调用mapper的selectById方法
            // Employee employee = employeeService.getById(id);
            // return ApiResponse.success(employee);
            return ApiResponse.error(501, "功能待实现");
        } catch (Exception e) {
            log.error("查询员工详情失败", e);
            return ApiResponse.error(500, "查询失败：" + e.getMessage());
        }
    }
}
